function data_process( zd, up ) 
    global g;
    disp('start process');
    root = './dataSets/';
    suffix = '_process.mat' ;
    if(~ischar(zd)) 
        zd = num2str(zd); 
    end
    name = [root, zd ,suffix];
    if(exist(name, 'file')  && ( up == 0 ))
        disp(['load ', name]);
        load(name);
        return;
    end
    if( up == 1)
        disp(['updata ', name]);
    end
    g.A = zeros( g.L, g.L+1);
    g.Rmse = zeros(1, g.L);
    g.yt = zeros(g.L ,length(g.yd));
    g.trace = zeros( g.L, g.G + 1);
    D= 2:(g.L+1);
    for  i = 1:g.L
        [ a , g.Rmse( i ), g.trace( i , : )] = data_DE( D( i ) );  
        g.A( i, 1:length(a) ) = a; 
        g.yt( i, : )  = data_build( a ); 
    end
    [~, index] = sort(g.Rmse);
    g.min_index = index(1); 
    g.min_rmse = g.Rmse(g.min_index);
    g.min_a = g.A(g.min_index, 1:(g.min_index + 1)); 
    disp('end process');
    save(name, 'g');
    disp(['save ', name]);
end